///******************** NG.Respate(C)  **********************************
//* 产品名称: Respate 科技
//* 文件名称: signal.c
//* 程序作者: 雷帕特公司(南宫子萍)
//* 程序版本: V1.1														   
//* 编制日期: 2019/1/29
//* 功能描述: 系统日志
//* QQ:	2085827949
//**********************************************************************/

#include "LapRead.h"

//从文件中读取数据
void* fileRead(const char* src)
{
	FILE *fp;
	int size = 0;
	char *data ;

	//二进制方式打开文件
	fp = fopen(src,"r");
	if(NULL == fp)
	{
		printf("Error:Open %s file fail!\n",src);
		return NULL;
	}

	//求得文件的大小
	fseek(fp, 0, SEEK_END);
	size = ftell(fp);
	rewind(fp);

	//申请一块能装下整个文件的空间
	data = (char*)malloc(sizeof(char)*size);

	//读文件
	RETVOID fread(data,1,size,fp);//每次读一个，共读size次
	fclose(fp);
    return data;
}



int getPasswd(const char* info,char* buff,int check)
{
    getScanfClear(info,buff,check);
    return 0;
}




int check_size(char * str,int num)
{
    char *p= str;
    while(1)
    {
        if((*str == '\r')||(*str == '\n')||(*str==0)) 
        {
            *str = 0; 
            break;
        }
        else
        {
            num--;
            str++;
        }      
    }
    printf("buff12:%s",p);
    
    if(num<0) return -1;
    else return 0;
}


// 获取指定长度字符串
int getIputStr(char* buff,int size)
{
    char *p = NULL;
    int len = -1;

    while(buff[0] == 0)
    {   
        p = buff;   //重置指针

        // 输入函数
        len = read(0,buff,size);
        if(len >=0) goto do_Parsing;    // 接收到数据 ->处理数据

        // len =Lap_readNetInput(buff,size);
        // if(len >=0) goto do_Parsing;    // 接收到数据 ->处理数据

        usleep(200*1000);   // 休眠200ms
        continue;           //未接收到数据

// 处理得到的字符串
do_Parsing:
        clear_ctr();    // 吸收剩余字符
        len = 0;
        while (*p && !(*p =='\r'|| *p =='\n')) {p++ ; len++; }   // 去掉非法字符
        *p = 0;

        if((size >= len)&&(buff[0]!=0)) return len;  // 检测长度是否合理
        else return -1;
    }
    return -1;   // 返回获取的字符串长度
}


/*********************************************************************************
** 函数名称: getScanfClear
** 功能描述: 获取输入数据
** 输入参数: info: 提示信息     buff: 输入缓冲区        len: 缓冲区大小
** 输出参数: None.
** 返回参数: return .
**********************************************************************************/
int getScanf(const char* info,char* buff,const int len)
{
    int i = -1; 
    while(1)
    {
        printf(info);               // 输出提示信息
        fflush(stdout);             // 刷新输出缓冲区(强制输出)
        memset(buff,0,len);         // 重置缓冲区

        i = getIputStr(buff,len);   // 获取指定长度字符串字符串
        if(i < 0 )
        {
            RETVOID system("clear");
            printf("字符长度非法,请重新输入！\r\n");
        } 
        else
        {
            //printf("buff:%s len:%d\r\n",buff,i);
            return i;
        }
    }
    return -1;
}

/*********************************************************************************
** 函数名称: getScanfClear
** 功能描述: 获取输入数据 并清屏
** 输入参数: info: 提示信息     buff: 输入缓冲区        len: 缓冲区大小
** 输出参数: None.
** 返回参数: return .
**********************************************************************************/
int getScanfClear(const char* info,char* buff,int len)
{
    RETVOID system("clear");
    return getScanf(info,buff,len);
}